package com.bjpowerrnode.javase.array;
/*
关于一维数组的扩容：
    在java开发中，数组的长度一旦确定不可改变，那么数组满了怎么办？
        数组满了，需要扩容。
        java中对数组的扩容如下：
            先创建一个大的数组，然后将小容量的数组里的数据考到大容量大的数组中。

 结论：数组扩容效率较低，因为涉及到拷贝问题。
 */
public class ArrayTest08 {
    public static void main(String[] args) {
        //java中的数组是怎么拷贝的呢？
        //System.arraycopy();

        //拷贝源(从这个数组上拷贝)
        int[] src = {1,11,22,3,4};

        //拷贝目标(拷贝到这个数组上)
        int[] dest = new int[20];//动态初始化一个长度为20的数组，默认值为0


        //调用JDK System类中的arraycopy方法完成数组拷贝
        System.arraycopy(src,0,dest,1,src.length);
        
        //遍历目标数组
        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);
        }

        String[] strs = {"hello","word","study","java","JDK"};
        String[] strs1 = new String[20];

        System.arraycopy(strs,0,strs1,0,strs.length);
        for (int i = 0; i < strs1.length; i++) {
            System.out.println(strs1[i]);
        }

        Object[] objs = {new Object(),new Object(),new Object()};
        Object[] newObject = new Object[10];

        //这里拷贝的是对象的地址
        System.arraycopy(objs,0,newObject,0,objs.length);

        System.out.println("=====================");
        for (int i = 0; i < newObject.length; i++) {
            System.out.println(newObject[i]);
        }

    }
}
